package vwg.na.vwm.rh.motorsdk.modelo.procesos.daoimpl;

import java.util.List;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import vwg.na.vwm.rh.motorsdk.modelo.procesos.IdeaProceso;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.dao.IdeIdeaIntercambioDAO;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.IdeIdeaIntercambio;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.entidadesgrales.IdeIntercambio;
import vwg.na.vwm.rh.rhmotor.modelo.dao.GenericDAO;

@Repository
public class IdeIdeaIntercambioDAOImpl extends GenericDAO<IdeIdeaIntercambio>
	implements IdeIdeaIntercambioDAO {

    @SuppressWarnings("unchecked")
    @Override
    public List<IdeIdeaIntercambio> getIntercambiosByIdea(
	    IdeaProceso ideaProceso) {	
	return getHibernateTemplate().find("FROM IdeIdeaIntercambio as i "
		+ "LEFT JOIN FETCH i.idIntercambio "
		+ "WHERE i.ideaProceso = ? ", ideaProceso);
    }

    @Override
    public void deleteByIdeaAndIntercambio(IdeaProceso idea,
	    IdeIntercambio idIntercambio) {
	getHibernateTemplate().find("DELETE FROM IdeIdeaIntercambio as i "
		+ "WHERE i.idIntercambio = ? and i.ideaProceso = ?", idIntercambio, idea);
    }

    @SuppressWarnings("unchecked")
    @Override
    @Transactional(readOnly = true, propagation = Propagation.REQUIRED)
    public List<IdeIdeaIntercambio> existeIntercambioByIdea(
	    IdeaProceso proceso, IdeIntercambio intercambio) {
	return getHibernateTemplate().find("FROM IdeIdeaIntercambio as i "
		+ "WHERE i.idIntercambio = ? and i.ideaProceso = ?", intercambio, proceso);
    }

}
